{
  lib,
  stdenv,
  fetchFromGitLab,
  autoreconfHook,
  pkg-config,
  parallel,
  sassc,
  inkscape,
  libxml2,
  glib,
  gtk_engines,
  gtk-engine-murrine,
  cinnamonSupport ? true,
  gnomeFlashbackSupport ? true,
  gnomeShellSupport ? true,
  openboxSupport ? true,
  xfceSupport ? true,
  mateSupport ? true,
  gtk3,
  mate,
  gtkNextSupport ? false,
  plankSupport ? false,
  steamSupport ? false,
  telegramSupport ? false,
  zip,
  tweetdeckSupport ? false,
  selectionColor ? null, # Primary color for 'selected-items' (Default: #3F51B5 = Indigo500)
  accentColor ? null, # Secondary color for notifications and OSDs (Default: #7986CB = Indigo300)
  suggestionColor ? null, # Secondary color for 'suggested' buttons (Default: #673AB7 = DPurple500)
  destructionColor ? null, # Tertiary color for 'destructive' buttons (Default: #F44336 = Red500)
}:

stdenv.mkDerivation (finalAttrs: {
  pname = "plata-theme";
  version = "0.9.9";

  src = fetchFromGitLab {
    owner = "tista500";
    repo = "plata-theme";
    rev = finalAttrs.version;
    hash = "sha256-08Xsnef7LU5NFiDC8Jdve9zqFJYbgKX+cl5mhtOmm8c=";
  };

  nativeBuildInputs = [
    autoreconfHook
    pkg-config
    parallel
    sassc
    inkscape
    libxml2
    glib
  ]
  ++ lib.optionals mateSupport [
    gtk3
    mate.marco
  ]
  ++ lib.optional telegramSupport zip;

  buildInputs = [ gtk_engines ];

  propagatedUserEnvPkgs = [
    gtk-engine-murrine
  ];

  postPatch = "patchShebangs .";

  configureFlags =
    let
      inherit (lib) enableFeature optional;
      withOptional = value: feat: optional (value != null) "--with-${feat}=${value}";
    in
    [
      "--enable-parallel"
      (enableFeature cinnamonSupport "cinnamon")
      (enableFeature gnomeFlashbackSupport "flashback")
      (enableFeature gnomeShellSupport "gnome")
      (enableFeature openboxSupport "openbox")
      (enableFeature xfceSupport "xfce")
      (enableFeature mateSupport "mate")
      (enableFeature gtkNextSupport "gtk_next")
      (enableFeature plankSupport "plank")
      (enableFeature steamSupport "airforsteam")
      (enableFeature telegramSupport "telegram")
      (enableFeature tweetdeckSupport "tweetdeck")
    ]
    ++ (withOptional selectionColor "selection_color")
    ++ (withOptional accentColor "accent_color")
    ++ (withOptional suggestionColor "suggestion_color")
    ++ (withOptional destructionColor "destruction_color");

  postInstall = ''
    for dest in $out/share/gtksourceview-{3.0,4}/styles; do
      mkdir -p $dest
      cp $out/share/themes/Plata-{Noir,Lumine}/gtksourceview/*.xml $dest
    done
  '';

  meta = {
    description = "GTK theme based on Material Design Refresh";
    homepage = "https://gitlab.com/tista500/plata-theme";
    license = with lib.licenses; [
      gpl2Plus
      cc-by-sa-40
    ];
    platforms = lib.platforms.linux;
    maintainers = with lib.maintainers; [ tadfisher ];
  };
})
